package com.diandi.ddsb.manager.impl;

import java.util.List;
import java.util.Map;

import com.diandi.ddsb.bean.Role;
import com.diandi.ddsb.bean.RoleResourceRef;
import com.diandi.ddsb.manager.RoleManager;
import com.diandi.ddsb.mapper.CenterRoleDao;
import com.diandi.ddsb.vo.RoleMangerDto;
import com.diandi.ddsb.vo.RoleMangerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


/**
 * 角色管理
 * 
 */
@Component
public class RoleManagerImpl implements RoleManager {

	@Autowired
	private CenterRoleDao roleDao;

	/**
	 * 插入角色
	 * 
	 * @return
	 */
	@Override
	public int insertRole(Role role) {
		return roleDao.insertRole(role);
	}

	/**
	 * 批量添加角色与资源关联关系
	 * 
	 * @return
	 */
	@Override
	public void batchInsertRoleResRef(List<RoleResourceRef> ltRoleResourceRef) {
		roleDao.batchInsertRoleResRef(ltRoleResourceRef);
	}

	/**
	 * 根据角色名称查询角色信息
	 * 
	 * @param roleName
	 * @return
	 */
	@Override
	public List<RoleMangerDto> queryRoleInfoByRoleName(String roleName) {
		return roleDao.queryRoleInfoByRoleName(roleName);
	}

	/**
	 * 根据ID查询角色信息
	 * 
	 * @param roleId
	 * @return
	 */
	// public RoleMangerVo findRoleInfoById(long roleId);

	/**
	 * 更新角色
	 * 
	 * @return
	 */
	@Override
	public int updateRole() {
		return roleDao.updateRole();
	};

	/**
	 * HEAD 获取资源列表
	 * 
	 * @return
	 */
	@Override
	public List<Map> getResourceList() {
		return roleDao.getResourceList();
	};

	/**
	 * 获取所有角色
	 * 
	 * @return
	 */
	@Override
	public List<Role> findAllRole() {
		return roleDao.findAllRole();
	};

	/**
	 * 找到根角色
	 * 
	 * @return
	 */
	@Override
	public Role findRootRole(long rootParentId) {
		return roleDao.findRootRole(rootParentId);
	};

	/**
	 * 找到当前节点下的所有子节点
	 * 
	 * @param roleId
	 * @return
	 */
	@Override
	public List<Role> findAllChildrenById(long roleId) {
		return roleDao.findAllChildrenById(roleId);
	};

	/**
	 * 根据id查询
	 * 
	 * @param id
	 * @return
	 */
	@Override
	public RoleMangerVo findById(long id) {
		return roleDao.findById(id);
	}

	/**
	 * 根据名称查询
	 * 
	 * @param name
	 * @return
	 */
	@Override
	public Role findByRoleName(String roleName) {
		return roleDao.findByRoleName(roleName);
	};

	/**
	 * 更新全路径
	 * 
	 * @param id
	 * @param fullPath
	 * @return
	 */
	@Override
	public void updateFullPath(long id, String fullPath) {
		roleDao.updateFullPath(id, fullPath);
	};

	/**
	 * @param roleName
	 * @return
	 */
	@Override
	public Role findByRoleNameBesideSelf(String roleName, long id) {
		return roleDao.findByRoleNameBesideSelf(roleName, id);
	};

	/**
	 * 更新role
	 * 
	 * @param role
	 */
	@Override
	public void updateRole(Role role) {
		roleDao.updateRole(role);
	};

	/**
	 * 删除
	 * 
	 * @param id
	 */
	@Override
	public void delete(long id) {
		roleDao.delete(id);
	};

	/**
	 * 根据id查找父角色
	 * 
	 * @param parentId
	 * @return
	 */
	@Override
	public Role findParentById(long id) {
		return roleDao.findParentById(id);
	};

	/**
	 * 获取系统管理员角色
	 * 
	 * @return
	 */
	@Override
	public RoleMangerVo getAdminRole() {
		return roleDao.getAdminRole();
	}

	@Override
	public Integer queryAdminRoleCount(long roleId) {
		return roleDao.queryAdminRoleCount(roleId);
	};

}
